package main

import "fmt"

//定义动物的结构体
type Animal struct {
	Name   string
	Age    int
	Weight float32
}

// 给Animal绑定一个方法
func (a Animal) PrintInfo() {
	fmt.Printf("动物的名字=%v, 年龄=%v, 体重=%v\n", a.Name, a.Age, a.Weight)
}

//定义猫的结构体
type Cat struct {
	//可以直接使用Animal的结构体
	Animal
	Color string
}

// 给Cat绑定一个方法
func (c Cat) sratch() {
	fmt.Printf("%v抓人\n", c.Name)
}

// 给Cat绑定一个方法PrintInfo
func (c Cat) PrintInfo() {
	fmt.Printf("猫的名字=%v, 年龄=%v, 体重=%v, 颜色=%v\n", c.Name, c.Age, c.Weight, c.Color)
}

func main() {
	//创建一个Cat变量
	var cat Cat
	cat.Name = "小花猫"
	cat.Age = 3
	cat.Weight = 2.3
	cat.Color = "花色"
	cat.PrintInfo()        //调用Cat的方法
	cat.Animal.PrintInfo() //调用Animal的方法
	cat.sratch()           //调用Cat的方法
}
